package br.unicamp.ft.sahp.controller.servico;

import java.util.List;

import br.unicamp.ft.sahp.model.entidades.Avaliacao;
import br.unicamp.ft.sahp.model.entidades.Questao;
import br.unicamp.ft.sahp.model.exception.AvaliacaoNaoEncontradaException;

public interface AvaliacaoService {

	public abstract List<Avaliacao> buscarTodasAvaliacoesDeUmAvaliador(
			Long codigoAvaliador) throws AvaliacaoNaoEncontradaException;

	public abstract void cadastrarAvaliacao(String nomeAvaliacao,
			Long codigoSistema, Long codigoQuestionario, Long codigoAvaliador);

	public abstract List<Avaliacao> buscarAvaliacoesPorNomeSistemaQuestionarioAvaliador(
			String nomeAvaliacao, Long codigoSistema, Long codigoQuestionario,
			Long codigoAvaliador) throws AvaliacaoNaoEncontradaException;
	
	public abstract Avaliacao buscarAvaliacaoPeloCodigo(Long codigoAvaliador);
	
	public abstract void alterarAvaliacao(Long codigoAvaliacao, String nome,
			Long codigoSistema, Long codigoQuestionario, Long codigoAvaliador);
	
	public abstract void excluirAvaliacao(Long codigoAvaliacao);
	
	public abstract List<Avaliacao> buscarAvaliacoesPorAvaliador(Long codigoAvaliador)
			throws AvaliacaoNaoEncontradaException;
	
	public abstract List<Avaliacao> buscarAvaliacoesRespondidas()
			throws AvaliacaoNaoEncontradaException;
	
	public abstract Avaliacao buscarAvaliacaoComRespostas(Long codigoAvaliacao);
	
	public abstract List<Questao> buscarQuestoesAvaliacao(Long codigoAvaliacao);
}
